package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.dtos.ArticleInfoDto;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.comment.dtos.CommentNewsQueryDto;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dtos.StatisticsDto;

import java.util.Date;
import java.util.Map;

/**
 * @author jack
 * @data 2024 11:30
 */
public interface ApArticleService extends IService<ApArticle> {

    /**
     * app热点文章加载
     *
     * @param homeDto 筛选条件
     * @param type  控制开关：1 表示加载首页和加载更多  2:表示加载更新
     * @return
     */
    ResponseResult load1(ArticleHomeDto homeDto, int type);
    /**
     * app文章加载
     *
     * @param homeDto 筛选条件
     * @param type  控制开关：1 表示加载首页和加载更多  2:表示加载更新
     * @return
     */
    ResponseResult load(ArticleHomeDto homeDto, int type);

    /**
     * 同步自媒体文章到app端
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 文章上下架
     *
     * @param map
     */
    void downOrUpArticle(Map map);

    /**
     * @author 18297
     * @date 2024/1/26 14:57
     * @description 加载文章行为数据回显
     * @param dto:
     * @return ResponseResult<?>
     */
    ResponseResult<?> loadArticleBehavior(ArticleInfoDto dto);

    void addCommentCount(Map map);

    /**
     * 功能描述：分页条件查询文章评论
     *
     * @param dto
     * @return {@link ResponseResult }
     * @author sungang
     * @date 2024/01/27  14:39
     */

    PageResponseResult findnewsQueryComents(CommentNewsQueryDto dto);


    PageResponseResult newPage(StatisticsDto dto);
    /**
     * @author 18297
     * @date 2024/1/28 19:19
     * @description 文章数据统计
     * @param wmUserId:
     * @param beginDate:
     * @param endDate:
     * @return ResponseResult
     */
    ResponseResult countAllDate(Integer wmUserId, Date beginDate, Date endDate);
}
